//只要以后需要向后端发起请求都要导入这个公共js，以便于统一设置axios和携带token

axios.defaults.baseURL = "http://127.0.0.1:3010/services"; //配置前缀
Vue.prototype.$http = axios; //给Vue这个类添加一个原型的属性,这个类的对象都能调用
Vue.config.productionTip = false;

axios.interceptors.request.use(config => {
    let token = $.cookie("U-TOKEN");
    //如果已经登录了,每次都把token作为一个请求头传递过程
    if (token && token.length > 0) {

        //无感刷新
        var expireTime = new Date().getTime()+1000*60*60*0.5;
        $.cookie('lastExpireTime',expireTime,{
            expires:1,
            path:'/',
            domain:'hrm.com', //域 www.hrm.com user.hrm.com xxx.hrm.com
            secure:false //是否支持https
        });
        // 让每个请求携带token--['X-Token']为自定义key 请根据实际情况自行修改
        config.headers['Authorization'] = "Bearer "+token;
    }else{
        var tmp = $.cookie(expireTime)-new Date().getTime();
        if(0<=tmp&& tmp<=5){
            //0<=token过期时间-当前时间<=5,刷新token，更改token过期时间
            refreshToekn();
        }
        if(tmp<0){
            var lastExpireTime = $.cookie('lastExpireTime');
            var currentTime = new Date().getTime();
            if(currentTime<=lastExpireTime){
                // 当前时间<=最后一次访问过期时间，正常来说没有过期但是token已经过，刷新token
                refreshToekn();
            }
            else{
                //当前时间》cookie最后一次访问过期时间，最后一个访问过期时间都已经过期，需要重新登录
                location.href = "http://user.hrm.com:6003/login.html";
            }
        }

    }
    return config
}, error => {
    Promise.reject(error)
})

function refreshToekn() {
    let  refreshToken = $.cookie("R-TOKEN");
    axios.post("/auth/loginUser/refreshToken",{"refreshToken":refreshToken,"type":1})
        .then(result=>{
            result = result.data();
            if(!result.success){
                alert(result.message)
            }
            else{
                var token = ajaxResult.resultObj.access_token;
                var refreshToken = ajaxResult.resultObj.refresh_token;
                var expireTime = new Date().getTime()+1000*60*60*0.5;
                $.cookie('U-TOKEN',token,{
                    expires:new Date(expireTime), //过期期间 如果是数字单位天，可以是日期
                    path:'/', //根及其所有的子子孙孙都可以获取
                    domain:'hrm.com', //域 www.hrm.com user.hrm.com xxx.hrm.com
                    secure:false //是否支持https
                });
                $.cookie('R-TOKEN',refreshToken,{
                    expires:20,
                    path:'/',
                    domain:'hrm.com',
                    secure:false
                });

                //无感刷新
                $.cookie('expireTime',expireTime,{
                    expires:1,
                    path:'/',
                    domain:'hrm.com', //域 www.hrm.com user.hrm.com xxx.hrm.com
                    secure:false //是否支持https
                });

                $.cookie('lastExpireTime',expireTime,{
                    expires:1,
                    path:'/',
                    domain:'hrm.com', //域 www.hrm.com user.hrm.com xxx.hrm.com
                    secure:false //是否支持https
                });
            }
        })
        .catch(result=>{
            alert("系统错误！")
        })
}